package net.ib.rpc.controller;

import com.google.protobuf.RpcCallback;
import com.google.protobuf.RpcController;

public class DefaultRpcControllerImpl implements RpcController {

	@Override
	public void reset() {
		// Client Side Only
		info("ConnectionController : reset()");
	}
	
	@Override
	public void startCancel() {
		// Client Side
		info("ConnectionController : startCancel()");
	}
	
	@Override
	public boolean failed() {
		// Client Side Only
		// 호출이 끝나기 전에 불리면 안된다.
		info("ConnectionController : failed()");
		return false;
	}
	
	@Override
	public String errorText() {
		// Client Side
		// failed() 가 true 이면 사람이 읽을 수 있는 문자로 에러를 묘사한다.
		info("ConnectionController : errorText()");
		return null;
	}

	@Override
	public void setFailed(String arg0) {
		// Server Side
		// failed data set
		info("ConnectionController : setFailed() arg0 : " + arg0);
	}
	
	@Override
	public boolean isCanceled() {
		// Server Side Only
		// RPC 클라이언트가 끊어지면 true
		info("ConnectionController : isCanceled()");
		return false;
	}

	@Override
	public void notifyOnCancel(RpcCallback<Object> arg0) {
		// Server Side
		info("ConnectionController : notifyOnCancel() arg0 : " + arg0);
	}
	
	private void info(String info){
		System.out.println(info);
	}
}
